"""
杜伊斯堡签证延期系统配置文件
"""
import os
from datetime import datetime, timedelta

# 基础配置
BASE_URL = "https://www.qtermin.de"
API_ENDPOINTS = {
    'timeslots': f"{BASE_URL}/api/timeslots",
    'appointment': f"{BASE_URL}/api/appointment"
}

# 请求头配置
HEADERS = {
    'authority': 'www.qtermin.de',
    'accept': 'application/json, text/plain',
    'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,de;q=0.6,de-DE;q=0.5,zh-TW;q=0.4',
    'cache-control': 'no-cache',
    'content-type': 'application/json',
    'pragma': 'no-cache',
    'priority': 'u=1, i',  # 新增优先级头
    'referer': 'https://www.qtermin.de/stadt-duisburg',
    'sec-ch-ua': '"Chromium";v="140", "Not=A?Brand";v="24", "Google Chrome";v="140"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-storage-access': 'active',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36',
    'webid': 'stadt-duisburg',
}

# 激活请求头（用于预约）
ACTIVATE_HEADERS = {
    **HEADERS,
    'origin': 'https://www.qtermin.de',
}

# Cookie配置
COOKIES = {
    'eTerminSessionId': 'lp5sduwddgf1ilytwte32uy1',
}

# 服务配置
SERVICES = {
    '乌克兰难民签': {
        'service_id': '409161',  # 服务ID
        'calendar_id': '409161',  # 日历ID（通常与服务ID相同）
        'duration': 15,
        'text': 'Ukraine-Flüchtlinge Aufenthaltstitel'
    },
    '学生签': {
        'service_id': '387844',
        'calendar_id': '387844',
        'duration': 30,
        'text': 'Aufenthaltserlaubnis für Studium'
    },
    '工作签': {
        'service_id': '387845',
        'calendar_id': '387845',
        'duration': 45,
        'text': 'Aufenthaltserlaubnis für Beschäftigung'
    },
    '新延签': {
        'service_id': '387843',
        'calendar_id': '387843',
        'duration': 20,
        'text': 'Verlängerung Aufenthaltserlaubnis'
    },
    '定居许可': {
        'service_id': '389113',
        'calendar_id': '389113',
        'duration': 20,
        'text': 'Niederlassungserlaubnis'
    },
    '白条': {
        'service_id': '389134',
        'calendar_id': '389134',
        'duration': 15,
        'text': 'Fiktionsbescheinigung'
    },
    '工签2024': {
        'service_id': '405747',
        'calendar_id': '405747',
        'duration': 30,
        'text': 'Arbeitserlaubnis 2024'
    },
    'UM驾照申请': {
        'service_id': '90496',  # 服务ID
        'calendar_id': '58604',  # 日历ID（从curl请求中获取）
        'duration': 12,
        'text': 'Führerscheinanträge (Erstantrag , Erweiterung , Verlängerung , Wiedererteilung) (1)'
    },
    '初次驾照申请': {
        'service_id': '90496',  # 服务ID（与UM驾照申请相同）
        'calendar_id': '58604',  # 日历ID
        'duration': 12,
        'text': 'Führerscheinanträge (Erstantrag , Erweiterung , Verlängerung , Wiedererteilung) (1)'
    }
}

# 请求参数模板
REQUEST_PARAMS_TEMPLATE = {
    'serviceid': '',
    'capacity': '1',
    'caching': 'true',  # 根据curl请求更新
    'duration': '',
    'cluster': 'false',
    'slottype': '0',
    'fillcalendarstrategy': '0',
    'showavcap': 'false',
    'appfuture': '30',  # 根据curl请求更新
    'appdeadline': '0',  # 根据curl请求更新
    'msdcm': '0',
    'oneoff': 'null',
    'appdeadlinewm': '0',
    'tz': 'W. Europe Standard Time',
    'tzaccount': 'W. Europe Standard Time',
    'calendarid': '',  # 动态设置
}

# 时间范围配置
TIME_RANGES = {
    'rangesearch': '1',
    'appfuture': '42',
    'appdeadline': '20',
}

# 邮件配置
EMAIL_CONFIG = {
    'smtp_server': 'smtp.gmail.com',
    'smtp_port': 465,
    'from_addr': 'roguelife2023@gmail.com',
    'from_name': 'DuisburgHelper',
    'password': 'qtfvjxhgtrbsxhue',
    'to_addr': 'zzuisa.cn@gmail.com'
}

# 音频文件配置（已禁用音频播放功能）
AUDIO_FILES = {
    'success': '8069.wav',
    'notification': 'mail.wav'
}

# 预约配置
BOOKING_CONFIG = {
    'language': 'de',
    'bookingtype': 'Internet',
    'bookingurl': 'https://www.duisburg.de/',
    'agbaccepted': 'false',
    'dataprivacyaccepted': 'false',  # 根据curl请求更新
    'feedbackpermissionaccepted': '0',  # 根据curl请求更新
    'newsletter': 'false',
    'senddoimsg': '1',  # 新增字段
    'checkexist': '1',
    'pricegross': '0',
    'capacity': '1',
    'canceldeadline': '0',
    'sync': '1',
    'sendemail': '1',
    'appointmentreminderhours': '-8',  # 根据curl请求更新
    'appointmentreminderhours2': '-1',  # 根据curl请求更新
    'confirmappointment': '1',
    'confirmtime': '720',  # 根据curl请求更新
    'sendinvoice': '1',
    'nrappbooked': '1',
    'capused': 'false',
    'capmaxused': '30',
    'customerconfirm': 'true',
    'calselid': '-1',
    'lnm': '1',
    'emailm': '1',
    'storeip': 'true',  # 根据curl请求更新
    'apw': 'true',  # 根据curl请求更新
    'tzaccount': 'W. Europe Standard Time'
}

# 系统配置
SYSTEM_CONFIG = {
    'max_retries': 5,
    'scan_interval': 1,  # 秒
    'random_delay_range': (1, 5),  # 随机延迟范围
    'working_hours': {
        'start': '07:00',
        'end': '23:59'
    },
    'target_date_range': {
        'start': '2025-10-01',
        'end': '2025-10-31'
    },
    'multi_user': {
        'max_concurrent_users': 4,  # 最大并发用户数
        'user_delay_range': (2, 8),  # 用户间随机延迟范围（秒）
        'enable_user_isolation': True,  # 启用用户隔离（每个用户独立的网络会话）
    },
    'debug': {
        'network_requests': False,  # 网络请求debug（默认关闭）
        'detailed_logging': False,  # 详细日志（默认关闭）
        'save_responses': False     # 保存响应到文件（默认关闭）
    }
}

# 路径配置
PATHS = {
    'logs': 'logs',
    'data': 'data',
    'media': 'static/media'
}

# 确保目录存在
for path in PATHS.values():
    os.makedirs(path, exist_ok=True)
